home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / ber / stream / BERIntegral.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  1.1 KB  |  95 lines

  1. package netscape.ldap.ber.stream;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6.  
  7. public abstract class BERIntegral extends BERElement {
  8.    private int m_value;
  9.  
  10.    public BERIntegral(int var1) {
  11.       this.m_value = var1;
  12.    }
  13.  
  14.    public BERIntegral(InputStream var1, int[] var2) throws IOException {
  15.       int var3 = BERElement.readLengthOctets(var1, var2);
  16.       if (var3 > 0) {
  17.          boolean var4 = false;
  18.          int var5 = var1.read();
  19.          int var10002 = var2[0]++;
  20.          if ((var5 & 128) > 0) {
  21.             var4 = true;
  22.          }
  23.  
  24.          for(int var6 = 0; var6 < var3; ++var6) {
  25.             if (var6 > 0) {
  26.                var5 = var1.read();
  27.                var10002 = var2[0]++;
  28.             }
  29.  
  30.             if (var4) {
  31.                this.m_value = (this.m_value << 8) + (var5 ^ 255) & 255;
  32.             } else {
  33.                this.m_value = (this.m_value << 8) + (var5 & 255);
  34.             }
  35.          }
  36.  
  37.          if (var4) {
  38.             this.m_value = (this.m_value + 1) * -1;
  39.          }
  40.       }
  41.  
  42.    }
  43.  
  44.    public void write(OutputStream var1) throws IOException {
  45.       int var2 = this.m_value;
  46.       int var3 = 0;
  47.       byte var4 = 1;
  48.       byte[] var7 = new byte[10];
  49.       byte[] var8 = new byte[10];
  50.       if (this.m_value == 0) {
  51.          var3 = 1;
  52.          var7[var4] = 0;
  53.          var8[var4] = 0;
  54.       } else {
  55.          if (this.m_value < 0) {
  56.             var2 = this.m_value * -1 - 1;
  57.          }
  58.  
  59.          do {
  60.             if (this.m_value < 0) {
  61.                var7[var3 + var4] = (byte)((var2 ^ 255) & 255);
  62.             } else {
  63.                var7[var3 + var4] = (byte)(var2 & 255);
  64.             }
  65.  
  66.             var2 >>= 8;
  67.             ++var3;
  68.          } while(var2 > 0);
  69.  
  70.          for(int var6 = 0; var6 < var3; ++var6) {
  71.             var8[var4 + var3 - 1 - var6] = var7[var4 + var6];
  72.          }
  73.  
  74.          byte var5 = var8[var4];
  75.          if (this.m_value > 0 && (var5 & 128) > 0) {
  76.             var4 = 0;
  77.             var8[var4] = 0;
  78.             ++var3;
  79.          }
  80.       }
  81.  
  82.       var1.write(this.getType());
  83.       BERElement.sendDefiniteLength(var1, var3);
  84.       var1.write(var8, var4, var3);
  85.    }
  86.  
  87.    public int getValue() {
  88.       return this.m_value;
  89.    }
  90.  
  91.    public abstract int getType();
  92.  
  93.    public abstract String toString();
  94. }
  95.